package egoc

import (
	"time"
)

// Group 分组定义
type Group struct {
	Name        string
	Description string
	Deprecated  bool
	TimeFormat  *TimeFormat
	Error       string // 组内通用错误信息
}

// FuncInfo 功能信息
type FuncInfo struct {
	Description    string
	Deprecated     bool
	ArgIsRequire   bool
	Upload         bool // 上传文件接口 不参与程序执行
	WebSocket      bool // websocket 接口 不参与程序执行
	IgnoreResponse bool // 忽略函数返回值，返回信息在函数内通过 http.ResponseWriter 返回，一般用于下载文件和图片等信息
	TimeFormat     *TimeFormat
	Error          string // 通用错误信息
}

type Loader interface {
	Group() Group
}

type TimeFormat struct {
	Datetime string
	Date     string
	Time     string
	Location *time.Location
}

type TimeFormatter string

const (
	TagDatetime     TimeFormatter = "datetime" // 时间为 日期+时间
	TagDate         TimeFormatter = "date"     // 时间为 日期
	TagTime         TimeFormatter = "time"     // 时间为 时间
	TagMillinSecond TimeFormatter = "ms"       // 时间为 毫秒
)

func (tf *TimeFormat) Get(format TimeFormatter) (string, *time.Location) {
	if format == TagDatetime {
		return tf.Datetime, tf.Location
	}
	if format == TagDate {
		return tf.Date, tf.Location
	}
	if format == TagTime {
		return tf.Time, tf.Location
	}
	return "", tf.Location
}
